사이트 내 전체검색
PHP
[소스] RGB 칼라 색상 혼합 두가지 색상을 섞어서 새색상으로 리턴
최고관리자
https://cmd.kr/php/19 URL이 복사되었습니다.

본문

작성:freeimage.kr 김성대
<?

$color1="#A3a3bb";
$color2="#aa0000";
$color3="#". mix_color($color1,$color2);

echo "<table width=100%><tr>";
echo "<td bgcolor=$color1 height=50></td>";
echo "<td bgcolor=$color2></td>";
echo "<td bgcolor=$color3></td>";
echo "</tr></table>";


//RGB 칼라 색상 혼합  두가지 색상을 섞어서 새색상으로 리턴
function mix_color($color1,$color2) {
 $color1=str_replace("#","",$color1);
 $color2=str_replace("#","",$color2);
 $out="";
 for ($i=0;$i<3;$i++) {
  $c1=substr($color1,$i*2,2);
  $c2=substr($color2,$i*2,2);
  $a=hexdec($c1);
  $b=hexdec($c2);
  $ret=($a+$b) - ($a*$b/255);

/* 다른 공식
  if (($a<=127&&$b<=127) || ($a>=127&&$b<=127) )  $ret=($a+$b) - ($a*$b/255);
  else $ret=255 - ((255-$a)*(255-b)*2)/255;
*/  
  if ($ret<0) $ret=0;
  if ($ret>255) $ret=255;
  $r=sprintf("%02X",intval($ret));
  $out.=$r;
  //echo "$color1 + $color2 : $c1 ($a) + $c2 ($b) = $r ($ret) <BR>";
 }
 return $out;
}

?>

색을 섞는 오버레이는 공식이 2개 적용됩니다.
포토샵레이어 팔레트에서 위에 있는 레이어의 R값을 a, 밑에 있는 레이어의 R값을 b라 하면
① a*b*2/255

② 255 - [{(255-a) * (255-b) * 2} /255]

입니다. (G, B 도 같은 방법으로 구하면 됩니다)

1번 공식은 a와 b가 127 (명도값 50) 보다 같거나 작을때와
a가 127보다 같거나 크고 b가 127보다 같거나 작을 때 적용됩니다.
즉 'a,b ≤ 127' 이거나 'a≥127, b≤127' 일때 입니다.

2번 공식은 a와 b가 127 보다 클 때와
a가 127보다 작고 b가 127보다 클때 적용됩니다.
즉 'a,b >127' 이거나 'a<127, b >127' 일때 입니다.


 

$color1="#A3a3bb"; $color2="#aa0000"; $color3="#". mix_color($color1,$color2);

댓글목록

등록된 댓글이 없습니다.

PHP
871 (18/18P)

Search

Copyright © Cmd 명령어 3.22.71.188